#ifndef OPERATIONWINDOW_H
#define OPERATIONWINDOW_H

#include <QWidget>
#include"qwtplot.h"
#pragma execution_character_set(“utf-8”)
namespace Ui {
class operationWindow;
}

class operationWindow : public QWidget
{
    Q_OBJECT

public:
    explicit operationWindow(QWidget *parent = nullptr);
    ~operationWindow();

private:
    Ui::operationWindow *ui;
    bool isOpen = false;//判断是否打开，再次点击“开”会禁用
    double randNumber(int n);//产生随机数
    double x;//接收随机数
    void showTableWidgetStr(QString str);
    void showTableWidgetStrList(QStringList list);
    void parameterSetting();//显示参数设置界面
    void parameterSettingAfterOK();//显示参数设置界面,点确认后
    void measureMethod();//测量界面-1.剖面(单滚)、2.断面(连滚)
    void setSamePart1(int n);//把重复的代码精简一下的函数,n就是按键上的数字
    void setSamePart2(int n);//把重复的代码精简一下的函数,n就是按键上的数字
    void measureMethodSamePart1(int n);//把重复的代码精简一下的函数,n就是按键上的数字
    void measureMethodSamePart2(int n);//把重复的代码精简一下的函数,n就是按键上的数字
    void measureAfterFirstOk();
    void measureInputData(QString str[],int n);//在测量界面-输入三个测量参数
    void measureInputFirstNumber(int n);//输入第一个参数实接电极数-1~9按键
    void measureInputSecondNumber(int n);//输入第二个参数电极号-1~9按键
    void measureInputThirdNumber(int n);//输入第三个参数滚动号-1~9按键
    void highDensityPowerSupplyTime(int n);//高密度方式，设置供电时间-数字键1~9

    void arrayFlashing(QString str[],int n);//输入排列参数界面-显示闪烁
    void arrayElectrode(int n);//输入电极数的方法
    void arrayDotPitch(int n);//输入点距的方法
    void arraySectionNumber(int n);//输入剖面数的方法

    void profileCurveInputData(int n);//显示剖面曲线-数字键1~9
    void profileCurveInputSecondData(int n);//显示剖面曲线-数字键1~9,第二个参数剖面号

    void sectionCurveInputData(int n);//显示剖面曲线-数字键1~9
    void sectionCurveInputSecondData(int n);//显示剖面曲线-数字键1~9,第二个参数剖面号

    qwtPlot *plot = new qwtPlot();

    void sleepQt(unsigned int msec);//自定义延时函数

    int state[18] = {1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};//判断状态，按键禁用
    bool forChoose = true;
    int nBtnNumber0;//数字0按键状态
    int nBtnNumber1;//数字1按键状态
    int nBtnNumber2;//数字2按键状态
    int nBtnNumber3;//数字3按键状态
    int nBtnNumber4;//数字4按键状态
    int nBtnNumber5;//数字5按键状态
    int nBtnNumber6;//数字6按键状态
    int nBtnNumber7;//数字7按键状态
    int nBtnNumber8;//数字8按键状态
    int nBtnNumber9;//数字9按键状态
    QStringList arrangement;//用来表示三种排列
    QString array;
    int arrayCount = 0;
    int arrayDataCount[2];
    int arrayData[3] = {1,60,16};//存储滚动总数、电极数、剖面数
    int totalPoint = 0;//总点数
    double dotPitch = 0.;//存储点距
    int pointNumber; //存储点数
    QString flashingStr[6];//存储闪烁的字符串
    int arrayStop = 0;//判断是否停止闪烁
    int arrayTimer = 1;
    int countArrayInputNumber = 1;//判断输入了几个数字,最多为两个
    int highDensity = 0;//判断选择的是否为高密度测量方式
    int sleepStop = 0;//高密度方式-供电时间-判断是否停止闪烁
    int highDensityCount = 1;//计数
    int highDensityData[2];//存储单个供电时间数据
    int highDensityDataAll = 5;//存储供电时间,默认为5

    int profileCurveStop = 0;//显示剖面曲线-输入断面号、剖面号-停止闪烁
    int profileCurveCount = 1;//计数3
    int profileCurveData[3];//存储
    int profileCurveDataAll[2];//存储断面号、剖面号

    int sectionCurveStop = 0;//显示断面曲线-输入断面号、剖面号-停止闪烁
    int sectionCurveCount = 1;//计数3
    int sectionCurveData[3];//存储
    int sectionCurveDataAll[2];//存储断面号、剖面号



    //显示剖面曲线
    QPolygonF points1,points2,pointTemp;//输入节点数据QPointF(x,y)
    int position = 0;//获取样本点位置
    double yTemp = 100.0;

    //显示断面曲线
    QPolygonF point0,point1,point2,point3,point4,point5,point6;


    int nBtnOK;//确认按键状态
    int nBtnQuit;//退出按键状态
    int nBtnPlus;//±按键状态
    int nBtnPoint;//·按键状态
    int count = 0;
    int countIn = 0;
    bool loop = true;
    int timerStop = 0;//设置参数界面-闪烁，判断定时器停止
    int timerStop2 = 0;
    int timerStopMeasure = 0;//输入测量参数，设置参数界面-闪烁，判断定时器停止
    int timerStopMeasure2 = 0;
    int countInputNumber = 1;//判断输入了几个数字
    int countInputNumberMeasure = 1;//测量-判断输入了几个数字
    int data[3] = {0,0,0};//参数设置界面存数据-断面号
    int data2[3] = {0,0,0};//参数设置界面存数据-剖面号
    int dataMeasure[3] = {0,0,0};//参数设置界面存数据-断面号
    int dataMeasure2[3] = {0,0,0};//参数设置界面存数据-剖面号
    int saveData = 0;//保存结果
    int saveDataMeasure = 0;//保存结果-起始剖面号
    int saveDataMeasure2 = 0;//保存结果-结束剖面号
    int measureStop = 0;//测量界面-输入三个参数-判断是否停止闪烁
    int measureTimer = 1;//循环用，实现闪烁
    QString measureInputString[6];//存储测量界面-输入参数-字符串
    int countMeasureInput = 1;//判断测量参数输入了几个数
    int measureSaveData[2];//保存单个数据
    int measureSaveDataAll[3];//保存三个参数

private slots:
    void Open();
    void showMenu();
    void measureMenu();
    void functionMenu();

signals:
    void toMainWindow();

};

#endif // OPERATIONWINDOW_H
